PostgreSQL pg_stat_kcache TPCC性能调优
1 背景知识
本文使用 BenchMarksql 6.0 进行TPC-C 测试并使用 pg_stat_kcache 扩展收集OS统计信息。
2 BenchMarksql 安装与配置
BenchMarksql 是使用 JAVA 语言实现的,底层使用 JDBC 驱动对数据库进行压力测试。此工具使用模拟客户端模拟:查询、多线程组、多用户和应用线程等操作。
本文主要使用 BenchMarksql 6.0 对 PostgreSQL 数据库进行性能测试,并通过 pg_stat_statements 视图 查看相统计信息。
请完成以下两个步骤:
3 查看性能视图
完成 PostgreSQL BenchMarksql 6.0 性能测试 章节实验,在完成基准测试之后。查询 pg_stat_kcache 视图 。
psql -U postgres -d testdb
3.1 查看底层操作系统概览数据
#testdb#
\x
SELECT * FROM pg_stat_kcache;
-[ RECORD 1 ]----+---------------------
datname | postgres
plan_user_time | 0.015097999999999997
plan_system_time | 0.004995999999999967
plan_minflts | 638
plan_majflts | 0
plan_nswaps | 0
plan_reads | 331776
plan_reads_blks | 40
plan_writes | 188416
plan_writes_blks | 23
plan_msgsnds | 0
plan_msgrcvs | 0
plan_nsignals | 0
plan_nvcsws | 26
plan_nivcsws | 0
exec_user_time | 0.04368300000000001
exec_system_time | 0.17503600000000005
exec_minflts | 464
exec_majflts | 0
exec_nswaps | 0
exec_reads | 335872
exec_reads_blks | 41
exec_writes | 49152
exec_writes_blks | 6
exec_msgsnds | 0
exec_msgrcvs | 0
exec_nsignals | 0
exec_nvcsws | 24
exec_nivcsws | 59
-[ RECORD 2 ]----+---------------------
datname | testdb
plan_user_time | 26.170398000007676
plan_system_time | 8.438287000001198
plan_minflts | 21378
plan_majflts | 0
plan_nswaps | 0
plan_reads | 73728
plan_reads_blks | 9
plan_writes | 0
plan_writes_blks | 0
plan_msgsnds | 0
plan_msgrcvs | 0
plan_nsignals | 0
plan_nvcsws | 4
plan_nivcsws | 106416
exec_user_time | 677.6005877859105
exec_system_time | 205.07353200055326
exec_minflts | 484047
exec_majflts | 30814
exec_nswaps | 0
exec_reads | 290430976
exec_reads_blks | 35447
exec_writes | 11158339584
exec_writes_blks | 1362101
exec_msgsnds | 0
exec_msgrcvs | 0
exec_nsignals | 0
exec_nvcsws | 1012694
exec_nivcsws | 1266758
关于上述输出的信息解释请查看 pg_stat_kcache 视图的说明。
3.2 查看大于 10s
的SQL 语句
#testdb#
SELECT * FROM pg_stat_kcache_detail
WHERE exec_user_time > 10
ORDER BY exec_user_time DESC;
关于上述输出的信息解释请查看 pg_stat_kcache_detail 视图的说明。